// ======================================================================== //
// Copyright 2009-2012 Intel Corporation                                    //
//                                                                          //
// Licensed under the Apache License, Version 2.0 (the "License");          //
// you may not use this file except in compliance with the License.         //
// You may obtain a copy of the License at                                  //
//                                                                          //
//     http://www.apache.org/licenses/LICENSE-2.0                           //
//                                                                          //
// Unless required by applicable law or agreed to in writing, software      //
// distributed under the License is distributed on an "AS IS" BASIS,        //
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. //
// See the License for the specific language governing permissions and      //
// limitations under the License.                                           //
// ======================================================================== //

#ifndef __EMBREE_STRING_H__
#define __EMBREE_STRING_H__

#include "../platform.h"

#include <stdio.h>
#include <string>
#include <cstring>
#include <string.h>
#include <sstream>
#include <algorithm>
#include <ctype.h>

namespace std
{
  static inline char to_lower(char c) { return char(tolower(int(c))); }
  static inline char to_upper(char c) { return char(toupper(int(c))); }
  static inline string strlwr(const string& s) { string dst(s); std::transform(dst.begin(), dst.end(), dst.begin(), to_lower); return dst; }
  static inline string strupr(const string& s) { string dst(s); std::transform(dst.begin(), dst.end(), dst.begin(), to_upper); return dst; }

  template<typename T> __forceinline string stringOf( T const& v) {
    stringstream s; s << v; return s.str();
  }
}

#endif
